package com.tarena.lbs.stock.web.service;

import com.tarena.lbs.pojo.stock.param.CouponStockParam;
import com.tarena.lbs.pojo.stock.po.CouponStockPO;
import com.tarena.lbs.stock.web.repository.CouponStockRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;

@Slf4j
@Service
public class StockService {
    @Autowired
    private CouponStockRepository couponStockRepository;

    public boolean saveCouponStock(CouponStockParam param) {
        //1. 创建一个CouponStockPO对象，用于封装入参数据
        CouponStockPO poParam=new CouponStockPO();
        // 将入参对象param中的属性值复制到poParam对象中
        BeanUtils.copyProperties(param,poParam);
        // 设置poParam对象的创建时间
        poParam.setCreateAt(new Date());
        // 设置poParam对象的更新时间为创建时间
        poParam.setUpdateAt(poParam.getCreateAt());
        //2.数据层保存写入
        int result=couponStockRepository.saveCouponStock(poParam);
        //注意: mybatis对于写操作 会自动将影响的行数 做返回值处理 在没有出现连接异常时,
        //执行的写操作可以利用返回值>0判断成功
        return result>0;
    }


    public boolean isEnough(Integer couponId) {
        Integer total=couponStockRepository.getStockByCouponId(couponId);
        return total>0;
    }

    public boolean reduceStock(Integer couponId) {
        Integer rows=couponStockRepository.reduceStockByCouponId(couponId);
        return rows>0;
    }
}
